<?php
namespace app\common\model\User;

use think\Model;

// 软删除
use traits\model\SoftDelete;

// 用户模型
class User extends Model{
    // 继承软删除
    use SoftDelete;

    // 模型对应的是哪张表
    protected $table='pre_user';

    // 指定一个自动设置的时间字段
    // 开启字段的名字
    protected $autoWriteTimestamp=true;

    // 设置字段的名字
    protected $createTime='createtime';//插入的时候设置的字段名

    // 禁止 写入的时间字段
    protected $updateTime=false;

    // 软删除的字段
    protected $deleteTime='deletetime';

    // 新建一个获取器
    // value是sex这个字段的值
    // 这个方法会覆盖原有的字段
    // public function getSexAttr($value){
    //     $sexlist=[0=>'保密',1=>'男',2=>'女'];
    //     return $sexlist[$value];
    // }

    protected $append=[
        'sex_text',//性别
        'cover_cdn',//封面获取器
    ];

    // 增加新字段
    public function getSexTextAttr($value,$data){
        $sexlist=[0=>'保密',1=>'男',2=>'女'];
        return $sexlist[$data['sex']];
    }

    // 增加新字段
    public function getAuthTextAttr($value,$data){
        $authlist=[0=>'未验证',1=>'已验证'];
        return $authlist[$data['auth']];
    }

    // 图片字段的验证器 avatar_cdn
    public function getAvatarCdnAttr($value,$data){
        $avatar=is_file($data['avatar']) ? '/'.$data['avatar'] : '/assets/home/images/avatar.jpg';

        // 获取的是config.php当中cdn选项
        $cdn=config('cdn');

        return $cdn.$avatar;
    }

    public function getCoverCdnAttr($value,$data){
        $cover=is_file($data['cover']) ? '/'.$data['cover'] : '/assets/home/images/back.jpg';

        // 获取的是config.php当中cdn选项
        $cdn=config('cdn');

        return $cdn.$cover;
    }

    // 地区获取器
    public function getRegionAttr($value,$data){
        $province=model('Region')->where(['code'=>$data['province']])->find();
        $city=model('Region')->where(['code'=>$data['city']])->find();
        $district=model('Region')->where(['code'=>$data['district']])->find();
        
        $output=[];
        if($province){
            $output[]=$province['name'];
        }

        if($city){
            $output[]=$city['name'];
        }

        if($district){
            $output[]=$district['name'];
        }

        return implode('-',$output);
    }

    // 给模型定义一个关联查询 查询省份
    public function provinces(){
        //参数1：关联的模型
        //参数2：用户表的外键的字段
        //参数3：关联表的主键
        //参数4：模型别名
        //参数5：链接方式 left
        // setEagerlyType(1) IN查询
        // setEagerlyType(0) JOIN查询
        return $this->belongsTo('app\common\model\Region','province','code',[],'LEFT')->setEagerlyType(1);
    }

    // 查询城市
    public function citys(){
        return $this->belongsTo('app\common\model\Region','city','code',[],'LEFT')->setEagerlyType(1);
    }

    // 查询县/区
    public function districts(){
        return $this->belongsTo('app\common\model\Region','district','code',[],'LEFT')->setEagerlyType(1);
    }
}


?>